package handler

import (
	"github.com/gin-gonic/gin"
	"i-qvideo-mgr/modler"
	"i-qvideo-mgr/pkg"
	"strconv"
)

//用户注册

func Add(c *gin.Context) {
	Username := c.PostForm("username")
	Email := c.PostForm("email")
	password := c.PostForm("password")
	if Username == "" || Email == "" || password == "" {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "不可为空",
		})
		return
	}

	//if pkg.MD5(password) != "" {
	//	c.JSON(200, gin.H{
	//		"code": 200,
	//		"msg":  "加密成功",
	//	})
	//	return
	//}
	user := modler.User{

		Username: Username,
		Email:    Email,
		Password: pkg.MD5(password),
	}
	err := modler.DB.Create(&user).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "注册失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "注册成功",
		})
		return
	}
}

//用户登录

func ListAdd(c *gin.Context) {
	username := c.PostForm("username")
	password := c.PostForm("password")

	if len(password) > 6 {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "密码格式不正确",
		})
		return
	}

	var user modler.User
	err := modler.DB.Where("username=? and password=?", username, pkg.MD5(password)).First(&user).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "账户和密码不存在",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "登录成功",
		})
		return
	}

}

//发布信息

func List(c *gin.Context) {
	title := c.PostForm("title")
	comment := c.PostForm("comment")
	img := c.PostForm("img")
	UserId, _ := strconv.Atoi(c.PostForm("user_id"))
	video := modler.Video{
		Title:           title,
		Comment:         comment,
		Img:             img,
		LikeCount:       0,
		CollectionCount: 0,
		UserID:          UserId,
	}
	err := modler.DB.Create(&video).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "发布失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "发布成功",
		})
	}
}

//上传文件

func Upload(c *gin.Context) {
	file, err := c.FormFile("img")
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "文件获取失败",
		})
		return
	}
	if file.Size > 2*1024*1024 {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "文件大小必须为2m",
		})
		return
	}

	path := "static/img/" + file.Filename
	err = c.SaveUploadedFile(file, path)
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "文件上传失败",
		})
		return
	} else {
		url := "http://" + c.Request.Host + "/" + path
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "文件上传成功",
			"data": url,
		})
		return
	}
}

func Listaa(c *gin.Context) {
	page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
	size, _ := strconv.Atoi(c.DefaultQuery("size", "2"))

	offset := (page - 1) * size

	var count int64
	modler.DB.Model(modler.Video{}).Count(&count)

	var video []modler.Video
	err := modler.DB.Preload("User").Offset(offset).Limit(size).Find(&video).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "查询失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "查询成功",
			"data": gin.H{
				"count": count,
				"video": video,
			},
		})
		return
	}

}
